// 引入fastify框架
const fastify = require('fastify')
// 引入fastify/cors框架已解决跨域
const cors = require('@fastify/cors')
// 引入MySQl功能依赖
const mysql = require('mysql')
//引入jsonwebtoken
const jwt = require('jsonwebtoken')

//生成Token
let secretKey = 'your-secret-key'; // 用于生成和验证Token的密钥，应保密
// 生成Token
const generateToken = () => {
  const payload = { 
    userId: 'your-user-id', // 用于标识用户的唯一ID
    role: 'admin' // 用户角色或权限
  };

  const options = {
    expiresIn: '1h' // Token的有效期
  };

  // 使用jsonwebtoken库生成Token
  const token = jwt.sign(payload, secretKey, options);

  return token;
}
//生成Token

/*
增：POST
删：DELETE
改：PUT
查：GET
*/

// 实例化
const app = fastify()
// 解决浏览器跨域问题
app.register(cors)

// MySQL数据库连接参数
const db = {
    // ip
    host: '127.0.0.1',
    // 端口
    port: 3306,
    // 用户名
    user: 'root',
    // 密码
    password: 'qq745483318',
    // 数据库名
    database: 'mstest'
}
let connection = mysql.createConnection(db)

// SQL语句
// 增： INSERT INTO test (id,name,ps)VALUES(id,name,ps)
// 删：	DELETE FROM test where id=值
// 改:	UPDATE test SET name = 值,ps = 值 where id = 值
// 查:	SELECT 查询结果的字段名称 FROM 表名


///////////////////////////////////////////////////////////////////////////////////////////////

// 登录
app.get('/login:user:pwd', function (request, reply) {
    console.log(request.query)
    console.log(`登录-来自客户端：用户名参数：${request.query.user} | 密码参数：${request.query.pwd}`)
    let msg = {
        message: '登录失败,用户名或者密码错误！',
        token:null,
        flag: false
    }
    if(request.query.user==''||request.query.pwd==''){
        msg.message='用户名或者密码不能为空'
        reply.send(msg)
        return;
    }
    // MySQL数据库操作-登录
    connection.query(`SELECT * FROM admintable`, function (err, results) {
        console.log(results, '\n')
        for (let i = 0; i < results.length; i++) {
            if (results[i].username == request.query.user) {
                if (results[i].password == request.query.pwd) {
                    msg.message = '登录成功！'
                    // 调用生成Token的函数
                    const token = generateToken();
                    msg.token=token
                    msg.flag = true
                } else {
                    msg.message = '登录失败,用户名或者密码错误！'
                    msg.flag = false
                }
            }
        }
        reply.send(msg)
    });
})


///////////////////获取信息列表START//////////////
app.get('/list:page:pagesize', function (request, reply) {
	console.log(`${(Number(request.query.page)-1)*Number(request.query.pagesize)+1},${(Number(request.query.page)-1)*Number(request.query.pagesize)+Number(request.query.pagesize)}`);
    connection.query(`select (SELECT count(*) FROM userinfotable) as counts,id,username,sex,age from userinfotable order by id asc limit ${(Number(request.query.page)-1)*Number(request.query.pagesize)},${Number(request.query.pagesize)}`, function (err, results) {
        console.log(results)
		reply.send(results)
    });
})
///////////////////获取信息列表END//////////////

///////////////////获取人员信息START//////////////
app.get('/infoone:id', function (request, reply) {
	connection.query(`select * from userinfotable where id = ${Number(request.query.id)}`, function (err, results) {
		console.log(results)
		reply.send(results)
	});
})
///////////////////获取人员信息END//////////////

///////////////////获取人员信息START//////////////
app.get('/infotwo:id', function (request, reply) {
	connection.query(`select * from learningsituationtable where uid = ${Number(request.query.id)}`, function (err, results) {
		console.log(results)
		reply.send(results)
	});
})
///////////////////获取人员信息END//////////////

///////////////////获取人员信息START//////////////
app.get('/infothree:id', function (request, reply) {
	connection.query(`select * from posttable where uid = ${Number(request.query.id)}`, function (err, results) {
		console.log(results)
		reply.send(results)
	});
})
///////////////////获取人员信息END//////////////


//服务器启动参数设定
app.listen({
    port: 3400,
    host: '0.0.0.0'
}).then((addr) => {
    // 服务器启动的回调
    console.log(`服务器访问地址： ${addr}`)
})
